package com.nq.activaity.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.nq.activaity.dto.UserSpecifiedPrizeResp;
import com.nq.activaity.entity.StUserSpecifiedPrize;
import com.nq.activaity.service.IStUserSpecifiedPrizeService;
import com.nq.common.Result;
import com.nq.dao.activaity.StUserSpecifiedPrizeMapper;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Description: 用户指定奖品表
 * @Author: jeecg-boot
 * @Date:   2024-11-06
 * @Version: V1.0
 */
@Service
public class StUserSpecifiedPrizeServiceImpl extends ServiceImpl<StUserSpecifiedPrizeMapper, StUserSpecifiedPrize> implements IStUserSpecifiedPrizeService {

    @Override
    public IPage<UserSpecifiedPrizeResp> queryPageList(Page<StUserSpecifiedPrize> page, QueryWrapper<StUserSpecifiedPrize> queryWrapper) {
        return baseMapper.queryPageList(page, queryWrapper);
    }

    @Override
    public Result addSpecifiedPrize(StUserSpecifiedPrize stUserSpecifiedPrize) {
        // 查询用户是否有未使用的
        Integer userId = stUserSpecifiedPrize.getUserId();

        Integer effectiveStatus = stUserSpecifiedPrize.getEffectiveStatus();
        if (StUserSpecifiedPrize.EFFECTIVE_STATUS_INITIAL.equals(effectiveStatus)) {
            StUserSpecifiedPrize specifiedPrize = baseMapper.queryPrizeByUserId(userId);
            if (null != specifiedPrize) {
                return Result.error("当前用户已有待使用的数据！");
            }
        }

        baseMapper.insert(stUserSpecifiedPrize);
        return Result.OK();
    }

    @Override
    public Result editSpecifiedPrize(StUserSpecifiedPrize stUserSpecifiedPrize) {
        // 查询用户是否有未使用的
        Integer userId = stUserSpecifiedPrize.getUserId();

        Integer effectiveStatus = stUserSpecifiedPrize.getEffectiveStatus();
        if (StUserSpecifiedPrize.EFFECTIVE_STATUS_INITIAL.equals(effectiveStatus)) {
            StUserSpecifiedPrize specifiedPrize = baseMapper.queryPrizeByUserId(userId);
            if (null != specifiedPrize) {
                return Result.error("当前用户已有待使用的数据！");
            }
        }
        baseMapper.updateById(stUserSpecifiedPrize);
        return Result.OK();
    }

}
